package ch.penas.web;

import java.io.Serializable;

import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;

import org.apache.log4j.Logger;

import ch.penas.business.dom.Ouvrage;
import ch.penas.business.dom.RechercheOuvrage;
import ch.penas.business.service.OuvrageService;
import ch.penas.business.service.OuvrageServiceImpl;

/** @author Daniel */
@ManagedBean(name = "manageBeanOuvrage")
@ApplicationScoped
public final class ManageBeanOuvrage implements Serializable {

	/** Serialisation de la class pour une question de securiter. */
    private static final long serialVersionUID = 8257495923563431462L;
    
    /** */
	private static final Logger LOGGER = Logger.getLogger(ManageBeanOuvrage.class);
	
	/** mOuvrage permet d'accede a la class Ouvrage. */
	private Ouvrage mOuvrage;
	
    /** mRechercheOuvrage permet d'acc�der � la class RechercheOuvrage. */
    private RechercheOuvrage mRechercheOuvrage;
	
    /** mService permet d'acc�der � la class OuvrageService. */
    private OuvrageService mService;

	/** Constructeur de la class ManageBeanOuvrage. */
	public ManageBeanOuvrage() {
		this.mOuvrage = new Ouvrage();
		this.mRechercheOuvrage = new RechercheOuvrage();
		this.mService = new OuvrageServiceImpl();
	}

	/** Permet d'ajouter un ouvrage a la list des ouvrages.
	 * 
	 * @return successOuvrage
	 */
	public String add() {
		this.mOuvrage.validate();
		this.mService.add(this.mOuvrage);
		return "successOuvrage";
	}
	
    /** Permet de rechercher un/des ouvrage/s. */
	public void search() {
	    this.mRechercheOuvrage.validate();
        this.mService.search(this.mRechercheOuvrage);
    }
    
    /** Permet de rechercher un/des ouvrage/s.
     * 
     * @return successOuvrage
     */
    public String searchFini() {
        return "successOuvrage";
    }

	/** Permet d'acceder a la page d'enregistrement de/des ouvrage/s.
	 * 
	 * @return registerOuvrage
	 */
	public String toRegistration() {
		LOGGER.debug("registration");
		this.mOuvrage = new Ouvrage();
		return "registerOuvrage";
	}
	
	/** Permet d'acceder a la page de suppression de/des ouvrage/s.
     * 
     * @return deleteOuvrage
     */
    public String toDelete() {
        LOGGER.debug("delete");
        return "deleteOuvrage";
    }

	/** Permet d'acceder a la list des ouvrages.
	 * 
	 * @return list
	 */
	public String toList() {
		LOGGER.debug("list");
		return "list";
	}
	
	/** Permet d'acceder a la page de rechairche de/des ouvrage/s.
	 * 
	 * @return rechercheOuvrage
	 */
	public String toSearch() {
		LOGGER.debug("recherche");
		return "rechercheOuvrage";
	}

	/** Permet de modifier la valeur de SelectedOuvrage.
	 * 
	 * @param ouvrage est egale a mOuvrage de la class ouvrage
	 */
	public void setSelectedOuvrage(final Ouvrage ouvrage) {
		this.mOuvrage = ouvrage;
	}
	/** Permet de recup�r� la valeur de SelectedOuvrage.
	 * 
	 * @return ouvrage
	 */
	public Ouvrage getSelectedOuvrage() {
		return this.getOuvrage();
	}

	/** Permet de retourner la valeur de mOuvrage qui est egale � Ouvrage.
	 * 
	 * @return mOuvrage
	 */
	public Ouvrage getOuvrage() {
		return this.mOuvrage;
	}
	
	/** Permet de retourner la valeur de mRechercheOuvrage qui est egale � RechercheOuvrage.
     * 
     * @return mRechercheOuvrage
     */
    public RechercheOuvrage getRechercheOuvrage() {
        return this.mRechercheOuvrage;
    }

	/** Permet de retourner la valeur de mService qui est egale � OuvrageService.
	 * 
	 * @return mService
	 */
	public OuvrageService getService() {
		return mService;
	}
}
